import Mock from 'mockjs'

interface IParams {
  pageNo: number
  pageSize: number
  productName: string
  sku: string //	number	否	产品ID：10开头，8位数字
  clearType: string //	number	否	结算方式：0为库存结算，1为账户结算
  productType: string //	number	否	产品属性：0为自营权益，1为平台权益
  brandCode: string //	number	否	产品品牌id：详情请参考品牌接口
  supplierId: string //	number	否	供应商id：详情请参考供应商接口
  code: string //	string	否	供货编码：4*6位数字+字母字符串
  pickupMethod: string //	number	否	领取方式：详情请参考领取方式接口
  standardCode: string //	number	否	产品规格id：详情请参考规格接口
  ticketDown: string //	number	否	券码下载：0为否，1为是
}

const defaultParams: IParams = {
  pageNo: 1, //	number	是	页码，大于等于1的数字
  pageSize: 2, //	number	是	每页显示条数
  productName: '', //	string	否	产品名称：2-40位字符串，区分全角/半角
  sku: '', //	number	否	产品ID：10开头，8位数字
  clearType: '', //	number	否	结算方式：0为库存结算，1为账户结算
  productType: '', //	number	否	产品属性：0为自营权益，1为平台权益
  brandCode: '', //	number	否	产品品牌id：详情请参考品牌接口
  supplierId: '', //	number	否	供应商id：详情请参考供应商接口
  code: '', //	string	否	供货编码：4*6位数字+字母字符串
  pickupMethod: '', //	number	否	领取方式：详情请参考领取方式接口
  standardCode: '', //	number	否	产品规格id：详情请参考规格接口
  ticketDown: '', //	number	否	券码下载：0为否，1为是
}

function createProductList(params: IParams) {
  // total	number	产品数量总条数
  // productList	array	产品列表
  // porductList[].id	number	产品ID
  // porductList[].logo	string	产品logo
  // porductList[].name	string	产品名称
  // porductList[].price	number	产品价格，浮点格式，展示前需转换成字符串格式
  // porductList[].pickup	number	领取方式特征码
  // porductList[].pickupDesc	string	领取方式描述
  // porductList[].down	number	是否允许下载：0为否，1为是
  // porductList[].brand	number	品牌ID

  const data = []

  for (let i = 0, l = params.pageSize; i < l; i++) {
    data.push(
      Mock.mock({
        id: '@datetime(yyyyMMddHH)' + '-' + Math.random().toString(36).slice(2, 10),
        logo: '@image("375x100", "@color", "@name")',
        productName: '@ctitle',
        sku: '10' + '@integer(8)',
        'clearType|1': [0, 1],
        'productType|1': [0, 1],
        brandCode: '@integer(8)',
        supplierId: '@integer(8)',
        code: Math.random().toString(36).slice(2, 10),
        standardCode: Math.random().toString(36).slice(2, 10),
        amount: '@integer(5,80)',
      })
    )
  }

  return data
}
// 返回给路由组件用的方法，相当于是react里的组件本身
// 如果是用post,参数要从params.body里取
export default function (params: any) {
  // pageNo	number	是	页码，大于等于1的数字
  // pageSize	number	是	每页显示条数
  // productName	string	否	产品名称：2-40位字符串，区分全角/半角
  // sku	number	否	产品ID：10开头，8位数字
  // clearType	number	否	结算方式：0为库存结算，1为账户结算
  // productType	number	否	产品属性：0为自营权益，1为平台权益
  // brandCode	number	否	产品品牌id：详情请参考品牌接口
  // supplierId	number	否	供应商id：详情请参考供应商接口
  // code	string	否	供货编码：4*6位数字+字母字符串
  // pickupMethod	number	否	领取方式：详情请参考领取方式接口
  // standardCode	number	否	产品规格id：详情请参考规格接口
  // ticketDown	number	否	券码下载：0为否，1为是

  // 使用mock创建返回消息
  return Mock.mock({
    // 接口消息
    msg: 'success',
    // 接口状态
    status: 200,
    // 调用一个可以生成列表的方法，参数是拿默认参数与post传入的参数进行合并得来的
    data: createProductList(Object.assign(defaultParams, params.body)),
  })
}
